<script>
  let target = [1, 2, [3, [4, [5]]]];

  // 第一种，循环+递归法
  //   function flatArr1(arr) {
  //     if (arr.length === 0) return;
  //     let result = [];
  //     for (const item of arr) {
  //       if (Array.isArray(item)) {
  //         result = result.concat(flatArr1(item));
  //       } else {
  //         result.push(item);
  //       }
  //     }
  //     return result;
  //   }
  //   console.log(flatArr1(target));

  // 第二种while循环
  //   function flatArr2(arr) {
  //     while (arr.some((item) => Array.isArray(item))) {
  //       arr = [].concat(...arr);
  //     }
  //     return arr;
  //   }
  //   console.log(flatArr2(target));

  // 第三种数组的flat方法
  console.log(target.flat(Infinity));
</script>
